package jech913.basic;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


//일반적으로 자바 클래스는 웹에서 실행 불가
//하지만, servlet 인터페이스를 구현한 클래스는 실행 가능 
//servlet인터페이스 구현시 [서블릿 관련 메서드를 재정의]해야 함.
//servlet 인터페이스 구현한 _03HelloServlet 클래스
//javax.servlet.Servlet: 서블릿 핵심 기술을 인터페이스로 작성

//반드시 재정의 해야하는 5가지 메서드
// init service getServletConfig destroy getServletInfo
public class _03HelloServlet implements Servlet{

	@Override
	public void destroy() {
		// 서블릿 쓰레드가 컨테이너로부터 제거될 때 호출
		System.out.println("destroy 호출!");
		
	}

	@Override
	public ServletConfig getServletConfig() {
		// 서블릿 쓰레드 생성시 필요한 설정작업을 처리하는 메서드 
		return null;
	}

	@Override
	public String getServletInfo() {
		// 서블릿 정보를 출력하는 메서드 
		return null;
	}

	@Override
	public void init(ServletConfig cfg) throws ServletException {
		// 서블릿 쓰레드 생성시 초기화 작업을 담당하는 메서드
		System.out.println("init 호출!!");
	}

	@Override
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		// 서블릿의 실행 진입점: 시작은 여기서부터! 
		System.out.println("service 호출!!");
		
		// 클라이언트로 응답하기 위해 출력 스트림 지정
		res.setContentType(" text/html; charset=UTF-8 ");
		PrintWriter out = res.getWriter(); 
		
		//간단한 html내용 출력
		out.print("<html>");
			out.print("<head>");
			out.print("</head>");
			out.print("<body><h1>Hello, Servlet Interface </h1>");
			out.print("</body>");
		out.print("</html>");
	}

}
